package com.example.uit_management;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;

public class ArrayAdapterRegistry_vs2 extends BaseAdapter implements OnCheckedChangeListener {
	// XML node keys	
	HashMap<String, String> array = new HashMap<String, String>(); 
	/**Biên kiểu Activity*/
    private Activity activity;  
    /**Biên kiểu ArrayList<HashMap<String, String>> lưu số mon có thể đăng kí năm nay */
    private ArrayList<HashMap<String, String>> data;
    /**Biên kiểu ArrayList<HashMap<String, String>> */
    private ArrayList<HashMap<String, String>> array_Json;
    /**Class kiểu JsonParser_regCourse */
    private JsonParser_regCourse Json_regCoure = new JsonParser_regCourse();
    /**Mảng String.Thay đổi khi thay check(mang kiem tra co dang ki hay chua)*/
    static String[] Check_array;
    /**Mảng String.Cố đinh không thai đổi(mang kiem tra an, khi chek) */
    static String[] Check_array_invi;
    
    
    private static LayoutInflater inflater=null;
    /** ham khoi tao null  */
    public ArrayAdapterRegistry_vs2() {
		// TODO  Auto-generated constructor stub
	}
    /**Hàm khởi tạo ArrayAdapterRegistry */
    public ArrayAdapterRegistry_vs2(Activity a, ArrayList<HashMap<String, String>> d) {
    	Log.e(ArrayAdapterRegistry_vs2.class.toString(),  "VAo Adapter 1");
    	activity = a;
        data = d;      
        HashMap<String, String> Map_Json_data;
        HashMap<String, String> Map_Json_array_Json;
        Activity_list_registry_vs2.TongTC_registry_vs2 = 0;
        array_Json= Json_regCoure.getMap();
    	Log.e(ArrayAdapterRegistry.class.toString(),"Array JSON*********************");
    	for (int i = 0; i < array_Json.size(); i++) {
    		Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Mon :"+i+":"+array_Json.get(i).get(JsonParser_regCourse.KEY_courseID));
		}        
        // mang kiem tra co dang ki hay chua
        Check_array = new String[data.size()];
        // mang kiem tra an, khi chek
        Check_array_invi = new String[data.size()];         
        
        // Nếu Sinh viên đã đăng kí môn học từ trước thì tiến hành tìm
        // kiếm những môn mà sinh viên đó đắng kí
        if(array_Json.size()>0){
        	Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Mon 1" );
	        //data là những môn học được đk học kì này
        	//array_Json là những môn học sinh viên đã đăng kí
        	//So sanh Mã môn học với nhau để hiển lên check cho sinh viên thây môn nào đã đk
        	for(int i=0; i<data.size(); i++){
        		Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Mon 2" );
	        	Map_Json_data = data.get(i);
	        	//Log.e(ArrayAdapterRegistry_vs2.class.toString(),"array_Json.size() :"+array_Json.size());
	        	for(int j=0; j< array_Json.size();j++){      
	        		Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Mon 3" );
	        		Map_Json_array_Json = array_Json.get(j);
	        		// So sánh. Nếu đung thì đánh dấu vào mảng là "1", không thì là "0"
	        		Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Mon 4" );
	        		if(Map_Json_data.get(JsonParser_course.KEY_courseID).equals(Map_Json_array_Json.get(JsonParser_regCourse.KEY_courseID))){
	        			
	        			Check_array[i]="1";
	        			Check_array_invi[i]="1";  
	        			Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Mon 5" );
	        			// Tinh TC cua cac mon da dang ki
	        			if(Map_Json_data.get(JsonParser_course.KEY_courseType).equals("main")||Map_Json_data.get(JsonParser_course.KEY_courseType).equals("Lý Thuyết")){
	        				Activity_list_registry_vs2.TongTC_registry_vs2  = Activity_list_registry_vs2.TongTC_registry_vs2 + Integer.parseInt(Map_Json_array_Json.get(JsonParser_regCourse.KEY_subjectCredit));
	        			}
	        			break; // break quan trọng 
	        		}  
	        		Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Mon 6" );
	        		Check_array[i]="0";
	        		Check_array_invi[i]="0";
	        	}                       
	        }
        }
        // Ngược lại nếu sinh viên chưa đăng kí thì ta đáng day vào mảng là "0"
        else
        {
        	Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Vào lệnh else");
        	for(int i=0; i<data.size(); i++){
        		Check_array[i]="0";
        		Check_array_invi[i]="0";
        	}
        }
        // Set len Text so TC dang ki
    	Activity_list_registry_vs2.textView_TongTC_registry_vs2.setText("Tổng TC đăng kí :" +Activity_list_registry_vs2.TongTC_registry_vs2);

        // Hiển thị các mảng              
        for(int m=0; m<Check_array.length; m++){
        	Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Check["+m+"] = "+Check_array[m]);  
        }
        for(int n=0; n<Check_array.length; n++){
        	Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Check invi["+n+"] = "+Check_array_invi[n]);  
        }  
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        Log.e(ArrayAdapterRegistry_vs2.class.toString(),"finish" );
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }
    /** Lấy giá trị Mã và tên môn học (subjectName)*/
    /** Lấy giá trị Mã và tên môn học (subjectName)*/
    public String getItemAtIndex(int index){
        return data.get(index).get(JsonParser_course.KEY_courseID)+"_"+data.get(index).get(JsonParser_course.KEY_subjectName);
    }
    /** Lấy giá trị Check box */
    public String GetCheckAtIndex(int index){
    	return Check_array[index];
    }
    public View getView(final int position, View convertView, ViewGroup parent) {
    	Log.e(ArrayAdapterRegistry_vs2.class.toString(),  "Vao get view 1");
    	View vi=convertView;      
        if(convertView==null)
            vi = inflater.inflate(R.layout.registry_row_vs2, null);
        // Get ID of Xml layout                
        array = data.get(position);  
        // Lấy ID các text view và các check box   

        TextView STT = (TextView)vi.findViewById(R.id.textview_STT_registry_vs2);
        TextView MaLop = (TextView)vi.findViewById(R.id.textview_MaLop_registry_vs2);
        TextView TenLop = (TextView)vi.findViewById(R.id.textview_TenLop_registry_vs2);
        TextView GiaoVien = (TextView)vi.findViewById(R.id.textview_GiaoVien_registry_vs2);
        TextView TCLT = (TextView)vi.findViewById(R.id.textview_TCLT_registry_vs2);
        TextView TCTH = (TextView)vi.findViewById(R.id.textview_TCTH_registry_vs2);
        TextView Khoa = (TextView)vi.findViewById(R.id.textview_Khoa_registry_vs2);
        TextView Ca = (TextView)vi.findViewById(R.id.textview_Ca_registry_vs2);
        TextView Thu = (TextView)vi.findViewById(R.id.textview_Thu_registry_vs2);
        TextView SiSo = (TextView)vi.findViewById(R.id.textview_SiSo_registry_vs2);
        TextView ToiDa = (TextView)vi.findViewById(R.id.textview_ToiDa_registry_vs2);
        //RelativeLayout relativeLayout = (RelativeLayout)vi.findViewById(R.id.linear_registry_RelativeLayout);
        CheckBox checkbox=(CheckBox)vi.findViewById(R.id.check_vs2);
        checkbox.setVisibility(View.VISIBLE);
        checkbox.getTag(position);  

        // thiết lặp bộ lắng nghe cho check box
        checkbox.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                CheckBox cb = (CheckBox) v.findViewById(R.id.check_vs2);
                if (cb.isChecked()) {
                	//Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Check"+position); 
                	Check_array[position]="1";
                	//////call Method ////////////
                	// check dialog mon thục hanh
                	Activity_list_registry_vs2.Check_Practice_Dialog(activity,position, array, data);
                	// Tinh TC cua cac mon da dang ki
	        		if(data.get(position).get(JsonParser_course.KEY_courseType).equals("main")||data.get(position).get(JsonParser_course.KEY_courseType).equals("Lý Thuyết")){
	        			Activity_list_registry_vs2.TongTC_registry_vs2  = Activity_list_registry_vs2.TongTC_registry_vs2 + Integer.parseInt(data.get(position).get(JsonParser_course.KEY_subjectPractice)) +Integer.parseInt(data.get(position).get(JsonParser_course.KEY_subjectTheory));
	        			}
	        		Log.e(ArrayAdapterRegistry_vs2.class.toString(),"SO tinh chi :"+Activity_list_registry_vs2.TongTC_registry_vs2 );  
	        		Activity_list_registry_vs2.textView_TongTC_registry_vs2.setText("Tổng TC đăng kí :" +Activity_list_registry_vs2.TongTC_registry_vs2);

                	// do some operations here
                } else if (!cb.isChecked()) {
                	//Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Check"+position); 
                	Check_array[position]="0";
	        		if(data.get(position).get(JsonParser_course.KEY_courseType).equals("main")||data.get(position).get(JsonParser_course.KEY_courseType).equals("Lý Thuyết")){
	        			Activity_list_registry_vs2.TongTC_registry_vs2  = Activity_list_registry_vs2.TongTC_registry_vs2 - (Integer.parseInt(data.get(position).get(JsonParser_course.KEY_subjectPractice)) +Integer.parseInt(data.get(position).get(JsonParser_course.KEY_subjectTheory)));
	        			}
                    // do some operations here
            		Log.e(ArrayAdapterRegistry_vs2.class.toString(),"SO tinh chi :"+Activity_list_registry_vs2.TongTC_registry_vs2 );  
                	Activity_list_registry_vs2.textView_TongTC_registry_vs2.setText("Tổng TC đăng kí :" +Activity_list_registry_vs2.TongTC_registry_vs2);
                	// check dialog mon thục hanh
                	Activity_list_registry_vs2.CheckDis_Practice_Dialog(activity,position, array, data);
                	
                }
                // hien thi mang
                for(int m=0; m<Check_array.length; m++){
                	Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Check["+m+"] = "+Check_array[m]);  
                }
                for(int m=0; m<Check_array_invi.length; m++){
                	Log.e(ArrayAdapterRegistry_vs2.class.toString(),"Check_invi["+m+"] = "+Check_array_invi[m]);  
                }
            }
        });   
        //
        // Tiến hành thiết lập các text view và ID đã lấy
        
        // Nếu đã đăng kí thì hiên check
        if(Check_array[position].equals("1")){
        	checkbox.setVisibility(View.VISIBLE);
        	checkbox.setChecked(true);
        }//  Nếu Chư đăng kí và số người đăng kí đã đầy
        else 
        	if(Check_array_invi[position].equals("0") && Integer.parseInt(array.get(JsonParser_course.KEY_courseSize))>=Integer.parseInt(array.get(JsonParser_course.KEY_courseMaxSize))){
        	checkbox.setVisibility(View.INVISIBLE);        	
        }else
        {// Nêu không không đầy và chưa đăng kí thì hiện bình thư
        	checkbox.setVisibility(View.VISIBLE);
        	checkbox.setChecked(false);        	
        }  
     // neu la mon thuc hanh thi disable check
    	if(data.get(position).get(JsonParser_course.KEY_courseID).split("\\.").length==3)
    	{
    		checkbox.setEnabled(false);
    	}else
    	{
    		checkbox.setEnabled(true);
    	}
        STT.setText(""+position);
        MaLop.setText(array.get(JsonParser_course.KEY_courseID));
        TenLop.setText(array.get(JsonParser_course.KEY_subjectName));   
        GiaoVien.setText(array.get(JsonParser_course.KEY_lecturerName));   
        TCLT.setText(array.get(JsonParser_course.KEY_subjectTheory));   
        TCTH.setText(array.get(JsonParser_course.KEY_subjectPractice));   
        Khoa.setText(array.get(JsonParser_course.KEY_facultyID));   
        Ca.setText(array.get(JsonParser_course.KEY_courseTime));   
        Thu.setText(array.get(JsonParser_course.KEY_courseDay));   
        SiSo.setText(array.get(JsonParser_course.KEY_courseSize));   
        ToiDa.setText(array.get(JsonParser_course.KEY_courseMaxSize));                       
        return vi;
    }

	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
		// TODO Auto-generated method stub
		
	}   	
	/**Set giá trị cho mảng kiem tra gia trị an,positon la vi tri can set, value la gia tri can set */
	public void set_Check_array(int position,int value){
		
	}
}